#ifndef BANK_ALARM_H
#define BANK_ALARM_H

#include <QtCore>

#include "ComDefine.h"
#include "Alarm.h"
#include "AlarmCache.h"
#include "AlarmParam.h"

// 报警
class CBankAlarm
{
public:
    //初始化告警为无效值
    void InitBankAlarmToInvalid();
	
public:
    quint16 usWarnNum;                         // 预警数
    quint16 usAlarmNum;                        // 告警数
    quint16 usProtNum;                         // 保护数

    quint8 uaTotalAlarmState;                  // 总报警状态
    quint8 uaWarnState;                        // 预警状态
    quint8 uaAlarmState;                       // 告警状态
    quint8 uaProtState;                        // 保护状态

    quint16 usFirstAlarmNo;                    // 第一条报警序号
    SAlarmParam param;                         // 报警保护参数
    SAlarm bankAlarm[BANK_ALARM_MAX_NUM];

    quint8 uaBankVolAlarmType;                     // 组端电压报警类型
    quint8 uaBankCurAlarmType;                     // 组电流报警类型
    quint8 uaBankSocAlarmType;                     // 组SOC报警类型
    quint8 uaEnvTempAlarmType;                     // 环境温度报警类型
    quint8 uaPosResAlarmType;                      // 正极绝缘内阻报警类型
    quint8 uaNegResAlarmType;                      // 负极绝缘内阻报警类型
    quint8 uaBankVolDiffAlarmType;                 // 组压采集差报警类型

    quint8 uaBMUConnFault;                         // BMU通讯故障
    quint8 uaBCMUConnFault;                        // BCMU通讯故障
    quint8 uaSglVolWireFault;                      // 单体电压采集线故障
    quint8 uaBankVolWireFault;                     // 总压采集线故障
    quint8 uaCurWireFault;                         // 电流采集线故障
    quint8 uaTempWireBreak;                        // 温度采集断线
    quint8 uaTempShortCircuit;                     // 温度采集短路
    quint8 uaBankCurAbnormity;                     // 组电流异常
    quint8 uaSglSocDiffAlarmType;                  // 单体Soc差告警类型   上海电气
    quint8 uaRes1AlarmType;                        // 预留1告警类型
    quint8 uaRes2AlarmType;                        // 预留2告警类型
    quint8 uaPosFuseAlarm;                         // 正极熔断器熔断
    quint8 uaNegFuseAlarm;                         // 负极熔断器熔断
    quint8 uaFireAlarm;                            // 消防报警
    quint8 uaWaterAlarm;                           // 水浸报警
    quint8 uaEmerStop;                             // 紧急停机
    quint8 uaExIOModuConnFault;                    // 扩展IO设备通讯故障
    quint8 uaPosJCQAdheFault;                      // 总正接触器粘连故障
    quint8 uaNegJCQAdheFault;                      // 总负接触器粘连故障
    quint8 uaPreJCQAdheFault;                      // 预充接触器粘连故障
    quint8 uaPosJCQNotCloseFault;                  // 总正接触器不闭合故障
    quint8 uaNegJCQNotCloseFault;                  // 总负接触器不闭合故障
    quint8 uaPreJCQNotCloseFault;                  // 预充接触器不闭合故障
    quint8 uaHallComFault;                         // 霍尔通讯故障
    quint8 uaHallDacFault;                         // 霍尔采集故障
    quint8 uaBankVolDiffFault;                     // 组压差采集故障
    quint8 uaBankCellVolDiffAlarmType;             // 组内单体电压极差报警类型
    quint8 uaBankCellTempDiffAlarmType;            // 组内单体温度极差上限保护
    quint8 uaBankModuleVolDiffAlarmType;           // 组内模块电压极差上限保护
    quint8 uaBankHvPwLnTempAlarmType[4];           // 高压动力线温度上限保护
    quint8 uaBankCurDiffAlarmType;                 // 组间环流报警类型
    quint8 uaBankCurDiffAlarmTypeTemp;             // 组间环流报警类型临时
    quint8 uaBankCurDiffAlarmCount;                // 组间环流报警计数
    quint8 uaPreChgAbnormalAlarmType;              // 预充异常报警

    quint8 uaSglVolAlarmType[MAX_BATT_NUM];        // 单体电压报警类型
    quint8 uaSglVolSudChgAlarmType[MAX_BATT_NUM];  // 单体电压突变报警类型
    quint8 uaSglResAlarmType[MAX_BATT_NUM];        // 单体内阻异常报警类型
    quint8 uaChgSglTempAlarmType[MAX_BATT_NUM];    // 充电温度报警类型
    quint8 uaDchgSglTempAlarmType[MAX_BATT_NUM];   // 放电温度报警类型
    quint8 uaSglTempRiseAlarmType[MAX_BATT_NUM];   // 温度温升报警类型
    quint8 uaPackVolDiffAlarmType[MAX_PACK_NUM];   // 箱压差报警类型
    quint8 uaPackTempDiffAlarmType[MAX_PACK_NUM];  // 箱温差报警类型
    quint8 uaPackVolAlarmType[MAX_PACK_NUM];       // 箱电压报警类型
    quint8 uaPwLnTempAlarmType[MAX_PACK_PWR_LN_TEMP_NUM];  // 动力线报警类型(包含总正总负)
    quint8 uaSglSocAlarmType[MAX_BATT_NUM];                // 单体SOC告警类型
    quint8 uaSglSohAlarmType[MAX_BATT_NUM];                // 单体SOH告警类型     上海电气

    quint16 usBMUConnFaultIndex;                   // BMU通讯故障Index

    // 告警缓存
    quint16 usFirstCacheNo;                        // 第一条告警缓存序号 xntransrv 直接取 第一条告警缓存
    quint16 usLastCacheNo;                         // 最后条告警缓存序号 xnprocsrv 直接放 指向下条空缓存
    SAlarmCache alarmCache[MAX_ALARM_CACHE_NUM];
};
#endif //BANK_ALARM_H
